/*********
51和STM，STM需要简单移植一下

********/
void  main(void)
{
/****************需要发送的文本**********************************/
        char code text[ ] =  {"ceshi"};
        unsigned  char  headOfFrame[5];
        unsigned  char  length ;
        unsigned  char  ecc  = 0 ;      //定义校验字节
        unsigned  int   i = 0;
        length =  strlen(text);       //需要发送文本的长度

/****************串口的初始化************************************/
         TL1 = 0xFA;        // 在11.0592MHz 下，设置波特率9600bps，工作方式2
         TH1 = 0xFA;
         TMOD = 0x20;
         SCON = 0x50;       // 串口工作方式1，允许接收
         PCON = 0x80;
         EA  = 0;
         REN = 1;
         TI = 0;            //发送中断标志位置零
         RI = 0;            //接收中断标志位置零
         TR1 = 1;           //定时器1 用作波特率发生

/*****************发送过程**************************************/
         headOfFrame[0] = 0xFD ;       //构造帧头FD
         headOfFrame[1] = 0x00 ;       //构造数据区长度的高字节
         headOfFrame[2] = length + 3;     //构造数据区长度的低字节
         headOfFrame[3] = 0x01 ;       //构造命令字：合成播放命令
         headOfFrame[4] = 0x01 ;       //构造命令参数：编码格式为GBK

         for(i = 0; i<5; i++)           //依次发送构造好的5个帧头字节
         {
             ecc=ecc^(headOfFrame[i]);     //对发送的字节进行异或校验
             SBUF = headOfFrame[i];
             while (TI== 0) {;}         //等待发送中断标志位置位
             TI = 0;             //发送中断标志位清零
         }

          for(i = 0; i<length; i++)       //依次发送待合成的文本数据
         {
             ecc=ecc^(text[i]);         //对发送的字节进行异或校验
             SBUF = text[i];
             while (TI== 0) {;}
             TI = 0;
         }

       SBUF=ecc;              //最后发送校验字节
       while (TI== 0) {;}
        TI=0;
      //  while(1);
}